<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/percpu_counter.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/percpu_counter.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1BFUkNQVV9DT1VOVEVSX0hfMA__"><span class="b">_LINUX_PERCPU_COUNTER_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1BFUkNQVV9DT1VOVEVSX0hfMA__"><span class="b">_LINUX_PERCPU_COUNTER_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> <span class="k">/*</span>
<a name="4" /><span class="Maybe">       4:</span> <span class="k"> * A simple &quot;approximate counter&quot; for use in ext2 and ext3 superblocks.</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="k"> *</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="k"> * WARNING: these things are HUGE.  4 kbytes per counter on 32-way P4.</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="k"> */</span>
<a name="8" /><span class="Maybe">       8:</span> 
<a name="9" /><span class="Maybe">       9:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">spinlock</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">smp</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">list</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">threads</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">percpu</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="15" /><span class="Maybe">      15:</span> 
<a name="16" /><span class="Maybe">      16:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NNUF8w"><span class="b">CONFIG_SMP</span></a>
<a name="17" /><span class="Maybe">      17:</span> 
<a name="18" /><span class="Maybe">      18:</span> <span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">{</span>
<a name="19" /><span class="Maybe">      19:</span>     <span class="b">raw_spinlock_t</span> <span class="b">lock</span><span class="f">;</span>
<a name="20" /><span class="Maybe">      20:</span>     <span class="b">s64</span> <span class="b">count</span><span class="f">;</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0hPVFBMVUdfQ1BVXzA_"><span class="b">CONFIG_HOTPLUG_CPU</span></a>
<a name="22" /><span class="Maybe">      22:</span>     <span class="m">struct</span> <span class="b">list_head</span> <span class="b">list</span><span class="f">;</span>    <span class="k">/* All percpu_counters are on a list */</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="f">#</span><span class="n">endif</span>
<a name="24" /><span class="Maybe">      24:</span>     <span class="b">s32</span> <a href="cpu.c_macros_ref.html#_X19wZXJjcHVfMA__"><span class="b">__percpu</span></a> <span class="f">*</span><span class="b">counters</span><span class="f">;</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="f">}</span><span class="f">;</span>
<a name="26" /><span class="Maybe">      26:</span> 
<a name="27" /><span class="Maybe">      27:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">percpu_counter_batch</span><span class="f">;</span>
<a name="28" /><span class="Maybe">      28:</span> 
<a name="29" /><span class="Maybe">      29:</span> <span class="m">int</span> <span class="b">__percpu_counter_init</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">,</span>
<a name="30" /><span class="Maybe">      30:</span>               <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="31" /><span class="Maybe">      31:</span> 
<a name="32" /><span class="Maybe">      32:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cGVyY3B1X2NvdW50ZXJfaW5pdF8w"><span class="b">percpu_counter_init</span></a><span class="f">(</span><span class="b">fbc</span><span class="f">,</span> <span class="b">value</span><span class="f">)</span>                    \
<a name="33" /><span class="Maybe">      33:</span>     <span class="f">(</span><span class="f">{</span>                                \
<a name="34" /><span class="Maybe">      34:</span>         <span class="m">static</span> <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="b">__key</span><span class="f">;</span>            \
<a name="35" /><span class="Maybe">      35:</span>                                     \
<a name="36" /><span class="Maybe">      36:</span>         <span class="b">__percpu_counter_init</span><span class="f">(</span><span class="b">fbc</span><span class="f">,</span> <span class="b">value</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">__key</span><span class="f">)</span><span class="f">;</span>        \
<a name="37" /><span class="Maybe">      37:</span>     <span class="f">}</span><span class="f">)</span>
<a name="38" /><span class="Maybe">      38:</span> 
<a name="39" /><span class="Maybe">      39:</span> <span class="m">void</span> <span class="b">percpu_counter_destroy</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span><span class="f">;</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="m">void</span> <span class="b">percpu_counter_set</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">)</span><span class="f">;</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="m">void</span> <span class="b">__percpu_counter_add</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">,</span> <span class="b">s32</span> <span class="b">batch</span><span class="f">)</span><span class="f">;</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="b">s64</span> <span class="b">__percpu_counter_sum</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span><span class="f">;</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="m">int</span> <span class="b">percpu_counter_compare</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">rhs</span><span class="f">)</span><span class="f">;</span>
<a name="44" /><span class="Maybe">      44:</span> 
<a name="45" /><span class="Maybe">      45:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">percpu_counter_add</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">)</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="f">{</span>
<a name="47" /><span class="Maybe">      47:</span>     <span class="b">__percpu_counter_add</span><span class="f">(</span><span class="b">fbc</span><span class="f">,</span> <span class="b">amount</span><span class="f">,</span> <span class="b">percpu_counter_batch</span><span class="f">)</span><span class="f">;</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="f">}</span>
<a name="49" /><span class="Maybe">      49:</span> 
<a name="50" /><span class="Maybe">      50:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">percpu_counter_sum_positive</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="f">{</span>
<a name="52" /><span class="Maybe">      52:</span>     <span class="b">s64</span> <span class="b">ret</span> <span class="f">=</span> <span class="b">__percpu_counter_sum</span><span class="f">(</span><span class="b">fbc</span><span class="f">)</span><span class="f">;</span>
<a name="53" /><span class="Maybe">      53:</span>     <span class="m">return</span> <span class="b">ret</span> <span class="f">&lt;</span> <span class="c">0</span> <span class="f">?</span> <span class="c">0</span> <span class="f">:</span> <span class="b">ret</span><span class="f">;</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="f">}</span>
<a name="55" /><span class="Maybe">      55:</span> 
<a name="56" /><span class="Maybe">      56:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">percpu_counter_sum</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="f">{</span>
<a name="58" /><span class="Maybe">      58:</span>     <span class="m">return</span> <span class="b">__percpu_counter_sum</span><span class="f">(</span><span class="b">fbc</span><span class="f">)</span><span class="f">;</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="f">}</span>
<a name="60" /><span class="Maybe">      60:</span> 
<a name="61" /><span class="Maybe">      61:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">percpu_counter_read</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="f">{</span>
<a name="63" /><span class="Maybe">      63:</span>     <span class="m">return</span> <span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span><span class="f">;</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="f">}</span>
<a name="65" /><span class="Maybe">      65:</span> 
<a name="66" /><span class="Maybe">      66:</span> <span class="k">/*</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> * It is possible for the percpu_counter_read() to return a small negative</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="k"> * number for some counter which should never be negative.</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="k"> *</span>
<a name="70" /><span class="Maybe">      70:</span> <span class="k"> */</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">percpu_counter_read_positive</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="f">{</span>
<a name="73" /><span class="Maybe">      73:</span>     <span class="b">s64</span> <span class="b">ret</span> <span class="f">=</span> <span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span><span class="f">;</span>
<a name="74" /><span class="Maybe">      74:</span> 
<a name="75" /><span class="Maybe">      75:</span>     <a href="cpu.c_macros_ref.html#_YmFycmllcl8w"><span class="b">barrier</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>        <span class="k">/* Prevent reloads of fbc-&gt;count */</span>
<a name="76" /><span class="Maybe">      76:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">ret</span> <span class="f">&gt;=</span> <span class="c">0</span><span class="f">)</span>
<a name="77" /><span class="Maybe">      77:</span>         <span class="m">return</span> <span class="b">ret</span><span class="f">;</span>
<a name="78" /><span class="Maybe">      78:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="79" /><span class="Maybe">      79:</span> <span class="f">}</span>
<a name="80" /><span class="Maybe">      80:</span> 
<a name="81" /><span class="Maybe">      81:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">percpu_counter_initialized</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="f">{</span>
<a name="83" /><span class="Maybe">      83:</span>     <span class="m">return</span> <span class="f">(</span><span class="b">fbc</span><span class="f">-&gt;</span><span class="b">counters</span> <span class="f">!=</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">)</span><span class="f">;</span>
<a name="84" /><span class="Maybe">      84:</span> <span class="f">}</span>
<a name="85" /><span class="Maybe">      85:</span> 
<a name="86" /><span class="False">      86:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* !CONFIG_SMP */</span>
<a name="87" /><span class="False">      87:</span> 
<a name="88" /><span class="False">      88:</span> <span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">{</span>
<a name="89" /><span class="False">      89:</span>     <span class="b">s64</span> <span class="b">count</span><span class="f">;</span>
<a name="90" /><span class="False">      90:</span> <span class="f">}</span><span class="f">;</span>
<a name="91" /><span class="False">      91:</span> 
<a name="92" /><span class="False">      92:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <a href="cpu.c_macros_noref.html#_cGVyY3B1X2NvdW50ZXJfaW5pdF8w"><span class="b">percpu_counter_init</span></a><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">)</span>
<a name="93" /><span class="False">      93:</span> <span class="f">{</span>
<a name="94" /><span class="False">      94:</span>     <span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span> <span class="f">=</span> <span class="b">amount</span><span class="f">;</span>
<a name="95" /><span class="False">      95:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="96" /><span class="False">      96:</span> <span class="f">}</span>
<a name="97" /><span class="False">      97:</span> 
<a name="98" /><span class="False">      98:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">percpu_counter_destroy</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="99" /><span class="False">      99:</span> <span class="f">{</span>
<a name="100" /><span class="False">     100:</span> <span class="f">}</span>
<a name="101" /><span class="False">     101:</span> 
<a name="102" /><span class="False">     102:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">percpu_counter_set</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">)</span>
<a name="103" /><span class="False">     103:</span> <span class="f">{</span>
<a name="104" /><span class="False">     104:</span>     <span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span> <span class="f">=</span> <span class="b">amount</span><span class="f">;</span>
<a name="105" /><span class="False">     105:</span> <span class="f">}</span>
<a name="106" /><span class="False">     106:</span> 
<a name="107" /><span class="False">     107:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">percpu_counter_compare</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">rhs</span><span class="f">)</span>
<a name="108" /><span class="False">     108:</span> <span class="f">{</span>
<a name="109" /><span class="False">     109:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span> <span class="f">&gt;</span> <span class="b">rhs</span><span class="f">)</span>
<a name="110" /><span class="False">     110:</span>         <span class="m">return</span> <span class="c">1</span><span class="f">;</span>
<a name="111" /><span class="False">     111:</span>     <span class="m">else</span> <span class="m">if</span> <span class="f">(</span><span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span> <span class="f">&lt;</span> <span class="b">rhs</span><span class="f">)</span>
<a name="112" /><span class="False">     112:</span>         <span class="m">return</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>
<a name="113" /><span class="False">     113:</span>     <span class="m">else</span>
<a name="114" /><span class="False">     114:</span>         <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="115" /><span class="False">     115:</span> <span class="f">}</span>
<a name="116" /><span class="False">     116:</span> 
<a name="117" /><span class="False">     117:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="118" /><span class="False">     118:</span> <span class="b">percpu_counter_add</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">)</span>
<a name="119" /><span class="False">     119:</span> <span class="f">{</span>
<a name="120" /><span class="False">     120:</span>     <a href="cpu.c_macros_ref.html#_cHJlZW1wdF9kaXNhYmxlXzA_"><span class="b">preempt_disable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="121" /><span class="False">     121:</span>     <span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span> <span class="f">+=</span> <span class="b">amount</span><span class="f">;</span>
<a name="122" /><span class="False">     122:</span>     <a href="cpu.c_macros_ref.html#_cHJlZW1wdF9lbmFibGVfMA__"><span class="b">preempt_enable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="123" /><span class="False">     123:</span> <span class="f">}</span>
<a name="124" /><span class="False">     124:</span> 
<a name="125" /><span class="False">     125:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="126" /><span class="False">     126:</span> <span class="b">__percpu_counter_add</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">,</span> <span class="b">s32</span> <span class="b">batch</span><span class="f">)</span>
<a name="127" /><span class="False">     127:</span> <span class="f">{</span>
<a name="128" /><span class="False">     128:</span>     <span class="b">percpu_counter_add</span><span class="f">(</span><span class="b">fbc</span><span class="f">,</span> <span class="b">amount</span><span class="f">)</span><span class="f">;</span>
<a name="129" /><span class="False">     129:</span> <span class="f">}</span>
<a name="130" /><span class="False">     130:</span> 
<a name="131" /><span class="False">     131:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">percpu_counter_read</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="132" /><span class="False">     132:</span> <span class="f">{</span>
<a name="133" /><span class="False">     133:</span>     <span class="m">return</span> <span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span><span class="f">;</span>
<a name="134" /><span class="False">     134:</span> <span class="f">}</span>
<a name="135" /><span class="False">     135:</span> 
<a name="136" /><span class="False">     136:</span> <span class="k">/*</span>
<a name="137" /><span class="False">     137:</span> <span class="k"> * percpu_counter is intended to track positive numbers. In the UP case the</span>
<a name="138" /><span class="False">     138:</span> <span class="k"> * number should never be negative.</span>
<a name="139" /><span class="False">     139:</span> <span class="k"> */</span>
<a name="140" /><span class="False">     140:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">percpu_counter_read_positive</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="141" /><span class="False">     141:</span> <span class="f">{</span>
<a name="142" /><span class="False">     142:</span>     <span class="m">return</span> <span class="b">fbc</span><span class="f">-&gt;</span><span class="b">count</span><span class="f">;</span>
<a name="143" /><span class="False">     143:</span> <span class="f">}</span>
<a name="144" /><span class="False">     144:</span> 
<a name="145" /><span class="False">     145:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">percpu_counter_sum_positive</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="146" /><span class="False">     146:</span> <span class="f">{</span>
<a name="147" /><span class="False">     147:</span>     <span class="m">return</span> <span class="b">percpu_counter_read_positive</span><span class="f">(</span><span class="b">fbc</span><span class="f">)</span><span class="f">;</span>
<a name="148" /><span class="False">     148:</span> <span class="f">}</span>
<a name="149" /><span class="False">     149:</span> 
<a name="150" /><span class="False">     150:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">percpu_counter_sum</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="151" /><span class="False">     151:</span> <span class="f">{</span>
<a name="152" /><span class="False">     152:</span>     <span class="m">return</span> <span class="b">percpu_counter_read</span><span class="f">(</span><span class="b">fbc</span><span class="f">)</span><span class="f">;</span>
<a name="153" /><span class="False">     153:</span> <span class="f">}</span>
<a name="154" /><span class="False">     154:</span> 
<a name="155" /><span class="False">     155:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">percpu_counter_initialized</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="156" /><span class="False">     156:</span> <span class="f">{</span>
<a name="157" /><span class="False">     157:</span>     <span class="m">return</span> <span class="c">1</span><span class="f">;</span>
<a name="158" /><span class="False">     158:</span> <span class="f">}</span>
<a name="159" /><span class="False">     159:</span> 
<a name="160" /><span class="Maybe">     160:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* CONFIG_SMP */</span>
<a name="161" /><span class="Maybe">     161:</span> 
<a name="162" /><span class="Maybe">     162:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">percpu_counter_inc</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="163" /><span class="Maybe">     163:</span> <span class="f">{</span>
<a name="164" /><span class="Maybe">     164:</span>     <span class="b">percpu_counter_add</span><span class="f">(</span><span class="b">fbc</span><span class="f">,</span> <span class="c">1</span><span class="f">)</span><span class="f">;</span>
<a name="165" /><span class="Maybe">     165:</span> <span class="f">}</span>
<a name="166" /><span class="Maybe">     166:</span> 
<a name="167" /><span class="Maybe">     167:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">percpu_counter_dec</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">)</span>
<a name="168" /><span class="Maybe">     168:</span> <span class="f">{</span>
<a name="169" /><span class="Maybe">     169:</span>     <span class="b">percpu_counter_add</span><span class="f">(</span><span class="b">fbc</span><span class="f">,</span> <span class="f">-</span><span class="c">1</span><span class="f">)</span><span class="f">;</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="f">}</span>
<a name="171" /><span class="Maybe">     171:</span> 
<a name="172" /><span class="Maybe">     172:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">percpu_counter_sub</span><span class="f">(</span><span class="m">struct</span> <span class="b">percpu_counter</span> <span class="f">*</span><span class="b">fbc</span><span class="f">,</span> <span class="b">s64</span> <span class="b">amount</span><span class="f">)</span>
<a name="173" /><span class="Maybe">     173:</span> <span class="f">{</span>
<a name="174" /><span class="Maybe">     174:</span>     <span class="b">percpu_counter_add</span><span class="f">(</span><span class="b">fbc</span><span class="f">,</span> <span class="f">-</span><span class="b">amount</span><span class="f">)</span><span class="f">;</span>
<a name="175" /><span class="Maybe">     175:</span> <span class="f">}</span>
<a name="176" /><span class="Maybe">     176:</span> 
<a name="177" /><span class="True">     177:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_PERCPU_COUNTER_H */</span>
<a name="178" /><span class="True">     178:</span> </pre>
  </body>
</html>
